import { NestFactory } from '@nestjs/core';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { AppModule } from './app.module';
import { Response } from './common/response';
import { HttpFilter } from './common/filter';

// 异步函数，用于启动应用程序
async function bootstrap() {
  // 创建Nest应用程序实例
  const app = await NestFactory.create(AppModule);

  // 创建Swagger文档配置
  const options = new DocumentBuilder()
    .setTitle('API文档')
    .setDescription('技术栈nest+swagger+mongodb+ts')
    .setVersion('1.0')
    .addBearerAuth()
    .build();
  // 创建Swagger文档
  const document = SwaggerModule.createDocument(app, options);
  // 设置Swagger文档路径
  SwaggerModule.setup('api', app, document);

  // 使用全局拦截器
  app.useGlobalInterceptors(new Response());
  // 使用全局异常过滤器
  app.useGlobalFilters(new HttpFilter());
  // 监听3000端口
  await app.listen(3000);
}
bootstrap();
